# 记录所有的名片字典
card_list = []


def show_menu():
    '''显示菜单'''
    print()
    print()
    print("*" * 33)
    print("**  欢迎使用【名片管理系统】V1.0  **")
    print("*" * 33)
    print("1. 新增名片")
    print("2. 查看全部")
    print("3. 搜索名片")
    print()
    print("0. 退出系统")
    print("*" * 33)


def add_card():
    '''新增名片'''
    print("-" * 33)
    print("新增名片")
    # 1. 提示用户输入名片的详细信息
    name_str = input("请输入姓名：")
    phone_str = input("请输入电话：")
    email_str = input("请输入电子邮箱：")

    # 2. 使用用户输入的信息，建立一个名片字典
    card_dict = {"name_str": name_str,
                 "phone_str": phone_str,
                 "email_str": email_str
                 }

    # 3. 将名片字典添加到列表中
    card_list.append(card_dict)
    print(card_list)

    # 4. 提示用户添加成功
    print("添加 %s 成功！" % card_dict.get("name_str"))


def show_all():
    '''显示所有名片'''
    print("-" * 33)
    print("显示所有名片")

    # 判断是否存在名片记录，如果没有，提示用户并且返回
    if len(card_list) == 0:
        print("当前没有任何的名片记录，请使用新增功能添加名片！")
        # return
        #       1. 可以返回一个函数的执行结果，
        #       2. 下方的代码不会执行
        return

        # 打印表头
    for title in ["姓名", "电话", "邮箱"]:
        print(title, end="\t\t")

    # 打印分割线
    print("\n", "=" * 50)

    for card_dict in card_list:
        print("%s\t\t\t%s\t\t\t%s" % (card_dict["name_str"], card_dict["phone_str"], card_dict["email_str"]))

    print("=" * 50)


def search_card():
    '''搜索名片'''
    print("-" * 33)
    print("搜索名片")

    # 1. 提示用户输入要搜索的姓名
    find_name_str = input("请输入您要搜索的姓名：")

    # 2. 遍历名片列表，查询要搜索的姓名，如果没有找到，需要提示用户
    for card_dict in card_list:
        if card_dict["name_str"] == find_name_str:
            print("姓名\t\t\t电话\t\t\t邮箱")
            print("=" * 50)
            print("%s\t\t\t%s\t\t\t%s" % (card_dict["name_str"], card_dict["phone_str"], card_dict["email_str"]))
            print("=" * 50)

            # 针对找到的名片记录执行修改和删除操作
            choose = input("请对输入对名片的操作：1：修改/ 2：删除/ 0：返回上级菜单")
            print("-" * 50)

            if "1" == choose:
                update_card(card_dict)
            elif "2" == choose:
                del_card(card_dict)

            break
    else:
        print("抱歉，没有找到 %s" % find_name_str)


def update_card(find_dict):
    find_dict["name_str"] = input_card_info(find_dict["name_str"], "姓名: ")
    find_dict["phone_str"] = input_card_info(find_dict["phone_str"], "电话: ")
    find_dict["email_str"] = input_card_info(find_dict["email_str"], "邮箱: ")
    print("成功修改 %s 的名片" % find_dict["name_str"])


def del_card(find_dict):
    card_list.remove(find_dict)
    print("成功删除 %s 的名片！！！" % find_dict["name_str"])


def input_card_info(dict_value, tip_msg):
    # 1. 提示用户输入的内容
    input_str = input(tip_msg)
    # 2. 针对用户的输入进行判断，如果用户输入了内容，直接返回结果
    # 3. 如果用户没有输入内容，返回 `字典中原有的值`
    if len(input_str) > 0:
        return input_str
    else:
        return dict_value

